home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / msysjour / vol06 / 02 / winmem32 / engine.h < prev    next >
Text File  |  1991-02-28  |  3KB  |  79 lines

  1. /**************************** ENGINE.H ****************************/
  2.  
  3. /* declarations for communication functions */
  4. extern  DWORD FAR PASCAL GetFarDword(WORD hSeg,DWORD dwOffset);
  5. extern  BYTE  FAR PASCAL GetFarByte(WORD hSeg,DWORD dwOffset);
  6. extern  void  FAR PASCAL PutFarByte(WORD hSeg,DWORD dwOffset,
  7.                                     BYTE byVal);
  8. extern  void  FAR PASCAL PutFarWord(WORD hSeg,DWORD dwOffset,
  9.                                     WORD wVal);
  10. extern  void  FAR PASCAL PutFarDWord(WORD hSeg,DWORD dwOffset,
  11.                                      DWORD dwVal);
  12. extern  DWORD FAR PASCAL Call32(WORD hCode,
  13.                                 WORD hData,
  14.                                 DWORD dwOffset,
  15.                                 DWORD dwInitESP,
  16.                                 DWORD dwESI,
  17.                                 DWORD dwEDI);
  18.  
  19. /* Header of simple EXP format */
  20. struct  EXPHeader   {
  21.  
  22.     WORD    signature;  /* MP */
  23.     WORD    sizemod512;
  24.     WORD    sizeinblocks;
  25.     WORD    numrelocitem;
  26.     WORD    headsizepara;
  27.     WORD    mindatapages;
  28.     WORD    maxdatapages;
  29.     DWORD   initESP;
  30.     WORD    checksum;
  31.     DWORD   initEIP;
  32.     WORD    offsetreloc;    /* 0x0000 */
  33.     WORD    overlaynumber;  /* 0x0000 */
  34.     WORD    endmagic;       /* 0x0001 */
  35.  
  36. };
  37.  
  38. #define MAXCHUNK  32767  /* load engine in this size chunks */
  39.  
  40. /*Offsets of important addresses relative to parameter block start*/
  41.  
  42. #define INIT            0L
  43. #define ACTION          4L
  44. #define BUFFER          8L
  45. #define CBCODESEG       12L
  46. #define CBCODEOFF       14L
  47. #define CBDATASEG       16L
  48. #define CBDATAOFF       18L
  49. #define DOSDATA         20L
  50. #define DOSCODE         22L
  51. #define DOSSTACK        24L
  52.  
  53.  
  54. #define GetInit ()      GetFarDword(hDataSeg,ParamBlock + INIT);
  55. #define GetAction()     GetFarDword(hDataSeg,ParamBlock + ACTION);
  56. #define GetBuffer()     GetFarDword(hDataSeg,ParamBlock + BUFFER);
  57. #define GetCbcodeseg()  GetFarWord(hDataSeg,ParamBlock + CBCODESEG);
  58. #define GetCbcodeoff()  GetFarWord(hDataSeg,ParamBlock + CBCODEOFF);
  59. #define GetCbdataseg()  GetFarWord(hDataSeg,ParamBlock + CBDATASEG);
  60. #define GetCbdataoff()  GetFarWord(hDataSeg,ParamBlock + CBDATAOFF);
  61. #define GetDosdata()    GetFarWord(hDataSeg,ParamBlock + DOSDATA);
  62. #define GetDoscode()    GetFarWord(hDataSeg,ParamBlock + DOSCODE);
  63. #define GetDosstack()   GetFarWord(hDataSeg,ParamBlock + DOSSTACK);
  64.  
  65. #define SetInit(o)      PutFarDword(hDataSeg,ParamBlock + INIT,(o));
  66. #define SetAction(o)    PutFarDword(hDataSeg,ParamBlock + ACTION,(o));
  67. #define SetBuffer(o)    PutFarDword(hDataSeg,ParamBlock + BUFFER,(o));
  68. #define SetCbcodeseg(o) PutFarWord(hDataSeg,ParamBlock +
  69.                                    CBCODESEG,(o));
  70. #define SetCbcodeoff(o) PutFarWord(hDataSeg,ParamBlock +
  71.                                    CBCODEOFF,(o));
  72. #define SetCbdataseg(o) PutFarWord(hDataSeg,ParamBlock +
  73.                                    CBDATASEG,(o));
  74. #define SetCbdataoff(o) PutFarWord(hDataSeg,ParamBlock +
  75.                                    CBDATAOFF,(o));
  76. #define SetDosdata(o)   PutFarWord(hDataSeg,ParamBlock + DOSDATA,(o));
  77. #define SetDoscode(o)   PutFarWord(hDataSeg,ParamBlock + DOSCODE,(o));
  78. #define SetDosstack(o)  PutFarWord(hDataSeg,ParamBlock + DOSSTACK,(o));
  79.